package main

import (
	"bufio"
	"fmt"
	"os"
)

// 使用 bufio + os.Stdin 读取
func readWithOS() {
	reader := bufio.NewReader(os.Stdin)
	// 使用 \n 读取出来的是输入字符串 + \r + \n 使用 \r 读取出来的是 输入字符串 + \n
	// linux/unix 使用 \n 做结尾符号无此问题，windwos平台使用\r\n做结尾符会有此问题
	line, err := reader.ReadString('\n')
	if err != nil {
		fmt.Println("readString err=", err)
	}
	// 使用切片解决后面的\r\n
	fmt.Println("输入的值：", line[:len(line)-2])      // 123
	fmt.Println("输入的值：", len(line[:len(line)-2])) //  5
}

// 使用scanf读取
func readWithScanf() {
	var i int
	_, e := fmt.Scanf("%d\n", &i)
	if e != nil {
		fmt.Println("输入异常！", e) // 输入异常！ 输入异常！ expected integer
	}
	fmt.Println("输入的值：", i) // 如果转换
}

func main() {
	readWithOS()
	// readWithScanf()
}
